System and Method for Downloading Software Upgrades

ABSTRACT

A method of upgrading a first software file stored at a wireless communication device so that the wireless communication device is provided with a second software file that is an upgraded version of the first software file, and also a wireless communication device and system, are disclosed. In at least one embodiment, the method includes receiving a software upgrade file, where the software upgrade file includes second-order difference information. The method also includes storing the upgrade file in a memory portion associated with the wireless communication device, and generating the second software file based upon the upgrade file, the first software file, and additional information. The additional information includes at least one of a pattern file representative of assumed differences between the first and second software files and at least some first-order difference information representative of at least some actual differences between the first and second software files.

CROSS-REFERENCE TO RELATED APPLICATION

The present application is a continuation of and claims the benefit ofU.S. non-provisional patent application Ser. No. 12/346,971, filed onDec. 31, 2008, and entitled “System and Method for Downloading SoftwareUpgrades”, the contents of which are hereby incorporated by referenceherein.

FIELD OF THE INVENTION

The present invention relates to software upgrade systems and, moreparticularly, to software upgrade systems involving wirelesscommunication devices.

BACKGROUND OF THE INVENTION

Wireless communication devices such as cellular telephones, pagers,personal digital assistants, and other handheld devices, are ubiquitousin the modern world. Frequently, such wireless communication devices areloaded with a plurality of software files including, for example,software application files for implementing a variety of softwareapplications, such as, electronic mail (or email), web browsers,wallpaper settings, screensavers, ring tones, etc., as well as variousdynamic link library (DLL) files, shared object files, firmware files,system configuration files, and other types of files required for theproper functioning of the wireless communication device. Occasionally,one or more of the aforementioned software files may need to be upgradedor revised for various reasons, for example, to correct software bugsthat corrupt portions of those files (or even the entire files) and/orto adapt the files for use with evolving technologies. Software upgradesto files may also be required to install new software applicationsand/or to add new features to the wireless communication devices.

Several techniques of providing such software upgrades to wirelesscommunication device have conventionally been used. One such techniqueis shown in FIGS. 1 and 2A-2C (Prior Art). FIG. 1 in particular shows aconventional software upgrade system 100 that employs a differencingcomponent 102 in communication with an update component 104 of awireless communication device (not shown) via a communication link 106.The differencing component 102 in particular includes a computer system108 having an update package (UP) generator 110 that receives anddetermines differences between a first file (Software Version A) 112 anda second file (Software Version B) 114 to generate an update packagefile or simply update package 116 (represented as [UP A→B]) reflectingthose differences. The communication link 106 can be representative ofany one or more communication links and/or communication mechanismsallowing for communication between the differencing component 102 andthe update component 104/wireless communication device (e.g., a digitalwireless communication signal communicated electromagnetically), whichare typically located apart from or remotely from one another.

With respect to the first and the second files 112 and 114,respectively, as well as the update package 116, each of these is asoftware file, exemplary details of which are shown in FIGS. 2A-C.Particularly, as shown in FIG. 2A, the first file 112 is an old ororiginal version (e.g., Version A) of a software file while, as shown inFIG. 2B, the second file 114 is a new and revised version (e.g., VersionB) of the first file, which includes one or more software upgrades inorder to correct software bugs, update pre-existing softwarecharacteristic, and/or to add new features. As further shown in FIG. 2A,the first file 112 can include a plurality of software applications, forexample, an e-mail application 200, a calendar application 202, a webbrowser application 204, as well as a cellular call processing stack206, user interface services software 208, digital signaling processorsoftware 209, a language pack 210, etc. Each of the aforementionedsoftware applications 200-210 is composed of a series of computerinstructions or software code. FIG. 2A in particular illustrates anexemplary software code portion 212 suitable for governing operation ofa software application XYZ (which is intended to be representative ofany of the applications 200-210).

FIG. 2B by comparison illustrates how, in at least the present exemplaryembodiment, the second file 114 includes much of the same, butadditionally some new, software portions relative to the first file 112.More particularly as shown, the second file 114 carries over thesoftware applications 200-210 from the first file 112 without anyrevisions thereto, as well as adds instant messaging client software214. Further, by comparison with the software code 212 of the first file112, the second file 114 is shown to incorporate exemplary software codeupgrades 216 and 218. The differences between the first and the secondfiles 112 and 114, respectively, are identified specifically in a thirdfile 220 shown in FIG. 2C, which is an example of the update package 116of FIG. 1. As shown, the third file 220 in particular includes theinstant messaging client software 214, as well as the software codeupgrades 216 and 218 of FIG. 2B, all of which were added as upgrades tothe second file 114.

Turning back to FIG. 1, upon generating the update package 116, it isdelivered via the communication link 106 to the update component 104.The update component 104 is a component within the wirelesscommunication device that receives the update package 116 and is capableof regenerating the second file 114 (that is, generating a copy of thesecond file 114 existing at the differencing component 102) from theupdate package 116 assuming that the update component 104 already has inits possession the first file 112. Upon regenerating the second file114, the update component 104 then additionally installs that file ontothe wireless communication device. In the present embodiment, the updatecomponent 104 includes a memory component 118 (e.g., Read Only Memory(ROM)) that is divided into several regions, namely, a file systemregion 120 where various software applications are stored, a softwareregion 122 where a copy of one file (e.g., the first file 112) isinstalled prior to upgrading and another file (e.g., the second file114) that replaces the one file upon completion of upgrading, a reservedROM region 124, and an update agent (UA) region 126, which implements anupdate agent software program to perform updating (e.g., updating of thefirst file with the second file).

FIG. 1 in particular shows the same update component 104/memorycomponent 118 three times to illustrate schematically how the contentsstored within the memory component evolve over three steps of theupdating operation. During the updating operation, the update package116 first is delivered through the communication link 106 into thememory 118 as shown in a first step 128 and, upon being received, isthen downloaded (as shown by an arrow 130) into the reserved ROM region124 of the memory, as shown in a second step 132. Also as shown, duringsteps 128 and 132, the software region 122 stores the first(non-updated) file 112. Next, at a third step 134, the update agentprovided by the UA region 126 operates upon the update file representedby the update package 116 (as shown by an arrow 136) to generate thesecond file 114 based upon the first file 112 stored within the softwareregion 122. The second file 114 is then stored and replaces the firstfile 112 within the software region 122 (as shown by an arrow 138).

In this manner, therefore, software (including firmware) upgrades can bedelivered and installed within the wireless communication device byfirst determining the differences between the old and the revisedsoftware files (e.g., the first and second files 112 and 114,respectively), transmitting the differences to the wirelesscommunication device, and using those differences to generate a copy ofthe revised software file (e.g., the second file 114) within thewireless communication device.

Although adequate in some respects, such conventional techniques ofupgrading software files within a wireless communication device arenevertheless inadequate in at least certain respects. For example, whenthe size of the update package is large, delivery of the update packageto the update component of the wireless communication device can beslow, and also the processing time (e.g., update time) within thewireless communication device can be long, thereby affecting deviceperformance Large update packages also necessitate large capacity at thereserved ROM region. In addition, in cases when the update packageexceeds the size of the reserved ROM region allocated for storing theupdate package, delivery of the update package to the update componentof the wireless communication device may be partially (or possiblyentirely) restricted.

It would therefore be advantageous if an improved system and/or methodcould be developed for delivering software and/or firmware updates (orupgrades) to wireless communication devices that alleviate at least someof the problems mentioned above.

BRIEF SUMMARY OF THE INVENTION

In at least some embodiments, the present invention relates to a methodof upgrading a first software file stored at a wireless communicationdevice so that the wireless communication device is provided with asecond software file that is an upgraded version of the first softwarefile. The method includes receiving, via a wireless communication link,a software upgrade file, where the software upgrade file includessecond-order difference information. The method further includes storingthe received software upgrade file in a first memory portion of at leastone memory component associated with the wireless communication device,and generating the second software file based upon the received softwareupgrade file, the first software file, and additional information. Theadditional information includes at least one of a pattern filerepresentative of assumed differences between the first and secondsoftware files and at least some first-order difference informationrepresentative of at least some actual differences between the first andsecond software files.

Additionally, in at least some embodiments, the present inventionrelates to a wireless communication device configured to allow forupgrading of a first software file stored thereon with a second softwarefile that is an upgraded version of the first software file. The deviceincludes a wireless receiver, a processing device in communication withthe wireless receiver, and a memory device in communication with theprocessing device. The memory device includes at least first, second andthird memory regions, where the first memory region is configured tostore the first software file, where the second memory region isconfigured to store a software upgrade file received wirelessly via thewireless receiver, and where the third memory region is configured tostore additional information that includes at least one of a patternfile representative of assumed differences between the first and secondsoftware files and at least some first-order difference informationrepresentative of at least some actual differences between the first andsecond software files. The processing device operating in conjunctionwith the memory device is configured to reconstruct the second softwarefile based upon the first software file, the software upgrade file, andthe additional information.

Further, in at least some embodiments, the present invention relates toa wireless communications system configured to allow for upgrading of afirst software file with a second software file that is an upgradedversion of the first software file achieving software upgrades. Thesystem includes a base station having a differencing component thatgenerates a software upgrade file including second-order differenceinformation representative of differences between first and secondintermediate files, where at least one of the intermediate filesincludes first-order difference information representative ofdifferences between the first and second software files. The system alsoincludes a mobile device in wireless communication with the base stationvia a wireless communication link, the mobile device including anupgrade component that receives the software upgrade file transmittedwirelessly from the base station and that generates the second softwarefile based upon the received software upgrade file, the first softwarefile and additional information. The additional information includes atleast one of a pattern file representative of assumed differencesbetween the first and second software files and at least some of thefirst-order difference information.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 (Prior Art) is a simplified schematic diagram of a softwareupgrade system for performing a software upgrade involving replacing afirst file with a second file within a wireless communication device;

FIGS. 2A-2C (Prior Art) show in a simplified schematic form exemplarycomponents of the software files corresponding to the first and secondfiles of FIG. 1, as well as a third file reflecting the differencesbetween the first and second files;

FIG. 3 is a schematic diagram of an exemplary wireless communicationsystem capable of performing software upgrades, in accordance with atleast some embodiments of the present invention;

FIG. 4 a simplified schematic diagram of a software upgrade system forperforming a software upgrade involving replacing a first file with asecond file within a wireless communication device, as can beimplemented upon the wireless communication system of FIG. 3, inaccordance with at least one embodiment of the present invention;

FIG. 5 a simplified schematic diagram of another software upgrade systemfor performing a software upgrade involving replacing a first file witha second file within a wireless communication device, as can beimplemented upon the wireless communication system of FIG. 3, inaccordance with at least one additional embodiment of the presentinvention; and

FIGS. 6A-6C show in a simplified schematic form, exemplary templatesrepresenting a second update package developed by the software upgradesystem of FIG. 4, as well as the software files from which the secondupdate package is developed.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

Referring now to FIG. 3, an exemplary wireless communication system 300is shown, upon which an improved software upgrade system in accordancewith at least some embodiments of the invention is implemented, asdescribed in further detail below. As shown, the wireless communicationsystem 300 in the present example includes a base station 302 that is incommunication with a wireless communication device 304 by way of awireless communication link 306. The base station 302 is intended to berepresentative of any of a variety of different types of devices andsystems (e.g., a server computer system and associated wirelesstransceiver and/or other communications equipment) capable ofcommunicating wirelessly with one or more wireless communication devicessuch as the wireless communication device 304. As shown, in the presentembodiment the base station 302 in particular includes a differencingcomponent 307 that is part of the improved software upgrade system, twoembodiments of which are described in further detail with respect toFIGS. 4-5.

The communication link 306, by which communications includingcommunications involving software upgrades occur between the basestation 302 and wireless communication device 304, can be any of a widevariety of communication channels, network interfaces, buses and/or acombination of the above. In addition, although presently intended torepresent a wireless communication link, the communication link 306 canin other embodiments involve wired communication links, or combinationsof wired and wireless communication links. Also, it should be understoodthat the wireless communications occurring via the communication link306 can involve any of a variety of technologies, protocols and otherformat including, for example, the internet and the World Wide Web(WWW), as well as connections involving various local area networks(LANs), metropolitan area networks (MANs), wide area networks (WANs),RS-232 communication links and telephone lines.

With respect to the wireless communication device 304, in at least thepresent embodiment it is intended to be a mobile device and includesvarious internal components 315 as shown in block diagram form. Althoughin the present embodiment the wireless communication device 304 isparticularly intended to be representative of a cellular telephone, thewireless communication device can also be other mobile devices dependingupon the embodiment, for example, personal digital assistants or otherhandheld devices, or even personal computers capable of wirelesscommunications, as well as devices operating on various mobile platformssuch as GSM, UMTS, CDMA, IDEN and WIMAX. Also, while FIG. 3 shows theinternal components 315, it should further be understood that thesecomponents are only intended to be exemplary and that other componentsin addition to (or instead of) those shown, can be present.

In the present exemplary embodiment, internal components 315 of thewireless communication device 304 include multiple components that arecapable of intercommunication with one another (either directly orindirectly) by way of an internal network or network(s) 317. Includedamong the internal components 315 particularly are one or more wirelesstransceivers 316, a processor 318, a memory portion 320, one or moreoutput devices 322, and one or more input devices 324. Additionally, theinternal components 315 include a user interface that comprises one ormore output devices 322 and one or more input devices 324. The internalcomponents 315 further include a component interface 326 that provides adirect (e.g., wired) connection to auxiliary components or accessoriesfor additional or enhanced functionality. The internal components 315also include a power supply 328, such as a battery, for providing powerto the other internal components while enabling the wirelesscommunication device 304 to be portable.

Each transceiver 316 can utilize any of a variety of wirelesstechnologies for communicating wirelessly with other devices by mediasuch as that represented by the wireless communication link 306. Uponreception of wireless communication signals, the internal componentsdetect communication signals and the transceiver 316 demodulates thecommunication signals to recover incoming information, such as voiceand/or data, transmitted by the wireless signals. After receiving theincoming information from the transceiver 316, the processor 318 formatsthe incoming information so that it is capable of being output at one ormore of the output device(s) 322. Likewise, for transmission of wirelesssignals, the processor 318 formats outgoing information, which may ormay not be activated by the input devices 324, and conveys the outgoinginformation to the transceiver 316 for modulation into wirelesscommunication signals.

The input and output devices 322, 324 of the internal components 315 caninclude a variety of visual, audio and/or mechanical outputs. Forexample, the output device(s) 322 can include a visual output device 330such as a liquid crystal display and light emitting diode indicator, anaudio output device 332 such as a speaker, alarm and/or buzzer, and/or amechanical output device 334 such as a vibrating mechanism. Likewise, byexample, the input devices 324 can include a visual input device 336such as an optical sensor (for example, a camera), an audio input device338 such as a microphone, and a mechanical input device 340 such as aflip sensor, keyboard, keypad, selection button, touch pad, touchscreen, capacitive sensor, motion sensor, and switch. In alternateembodiments, more than one of each of or some of (or one of) thesevarious types of output devices 322 and input devices 342 are present orabsent.

The internal components 315 of the wireless communication device 304 inthe present embodiment include a location circuit 342. The locationcircuit 342 can include, for example, a Global Positioning System (GPS)receiver, a triangulation receiver, an accelerometer, a gyroscope, orany other information collecting device that are capable of identifyinga current location of the device. Operation of the wirelesscommunication device 304 or one or more of the internal components 315therein can also depend upon the location of the wireless communicationdevice as determined via the location circuit 342 or otherwise basedupon movements of the wireless communication device. For example,actions that can actuate one or more input devices 324 can includeopening the wireless communication device, unlocking the device, movingthe device to actuate a motion, moving the device to actuate a locationpositioning system, and operating the device in other manners.

The memory portion 320 of the internal components 315 can include anynumber of a variety of different types of memory devices such as randomaccess memory (RAM) devices, read only memory (ROM) devices, opticalmemory devices, subscriber identity module memory devices, or any of avariety of other types of memory devices that can be used by theprocessor 318 to store and retrieve information. The information thatcan be stored by the memory portion 320 can include a variety ofdifferent types of software and software files, and particularly caninclude software files that can be (and/or may need to be) upgraded fromtime to time. For example, the software files can include softwareapplication files for implementing a variety of software applications,such as, electronic mail (or email), web browsers, wallpaper settings,screensavers, ring tones, etc., as well as various dynamic link library(DLL) files, shared object files, firmware files, system configurationfiles, file system services, and services related to the handling ofprotected and unprotected data stored in the memory portion, and othertypes of files required for the proper functioning of the wirelesscommunication device.

Also, the information that can be stored by the memory portion 320 caninclude software files related not only to software applications butalso to operating systems. Each operating system can be understood asincluding executable code that controls basic functions of thecommunication device, such as interaction among the components of theinternal components 315, communication with external devices via thetransceiver 316 and/or the component interface 326, and storage andretrieval of applications and data to and from the memory portion 320.This is in contrast to applications, which can be understood asincluding executable code that utilizes an operating system to providemore specific functionality for the communication devices. Further, thememory portion 320 can be understood as storing data other than softwarefiles, that is, data that is non-executable code or information that maybe referenced and/or manipulated by an operating system or applicationin performing any of a variety of functions or calculations.

In accordance with at least some embodiments of the present invention,the memory portion 320 in particular stores software files that can be(and/or occasionally may need to be) upgraded. Such upgradeable softwarefiles can include, among other things, any of the software filesmentioned above (e.g., software application files or operating systemfiles, including firmware files being upgraded as firmware over the air(FOTA) updates), although the present invention is intended broadlyencompass software upgrade systems capable of upgrading other types ofsoftware files as well. As will be described below, in the presentembodiment the memory portion 320 in particular is configured to includeseveral memory regions that are respectively employed to store varioustypes of data at various times before, during and after upgrading of asoftware file or files.

Turning now to FIG. 4, a schematic diagram is provided that illustratesin more detail particular components of the wireless communicationsystem 300 implemented in the base station 302 and the wirelesscommunication device 304, which operate as a software upgrade system 400capable of performing one or more (e.g., repeated) software upgrades, inaccordance with at least some embodiments of the present invention. Asshown, the software upgrade system 400 in particular includes adifferencing component 402 that is implemented at the base station 302of the wireless communication system 300, and further includes an updatecomponent 404 that is implemented at the wireless communication device304, where the differencing component 402 and update component 404 arein communication via a communication link 406 (which can be, among otherthings, any of the types of communication links described above withrespect to the communication link 306 of FIG. 3).

FIG. 4 in particular illustrates how the software upgrade system 400 iscapable of causing upgrading of (or replacement of) a first file 410with a second file 412 at the wireless communication device. Similar tothe files 112 and 114 of FIG. 1, respectively, the first file 410 is anold or original file (e.g., Version A file), while the second file 412is a new or revised file (e.g., Version B file) reflecting revisions toone or more software components of the first file 410 (e.g., revisionsthat correct one or more software bugs, update existing softwarefeatures and/or add new features). Generally speaking, each of the firstand second files 410 and 412, respectively, can be assumed to be asoftware file having a template similar to the templates of the firstand the second files 112 and 114, respectively, as described above withrespect to FIG. 1. Again, however, it should be understood that thefiles that can be upgraded in accordance with embodiments of the presentinvention can take any of a variety of forms, including but not limitedto those mentioned above.

Similar to the Prior Art embodiment described above with respect toFIGS. 1-2, in accordance with the present embodiment, the differencingcomponent 402 upon receiving the first and second files 410, 412 firstdetermines the differences between the first file and the second file.More particularly as shown, the differences between the first and thesecond files 410, 412 are determined by an update package (UP) generator408 of the differencing component 402, which utilizes a differencingsoftware scheme (e.g., a byte differencing algorithm) to determine thosedifferences. Upon determining the differences between the first andsecond files 410, 412, the UP generator 408 outputs an update file 414reflective of those differences (which can include, for example,computer instructions and/or replacement data).

The update file 414 (represented by [UP A→B]) is generally reduced insize compared to each of the first and second files 410 and 412,respectively, for example, about 1-5% of the size of each of thosefiles. Thus, the amount of data required to be transmitted, andcorresponding time required for that data to be transmitted, duringtransmission of the update file 414 from the differencing component 402of the base station 302 to the update component 404 of the wirelesscommunication device 304 is significantly less than would be the case ifthe second file 412 was directly transmitted in its entirety.Nevertheless, while the first update file 414 is reduced in sizecompared to the first and second files 410, 412 (and particularlyreduced in size relative to the second file 412, transmission of theupdate file 414 can still involve large amounts of data and largeamounts of time.

To reduce the amount of data to be transmitted and corresponding timerequired for that data to be transmitted even further, at least someembodiments of the present invention further generate a second updatepackage 416, also referred to herein as “Mini UP”, which is typicallyonly about 10% of the size of the first update file 414. To create thesecond update package 416, a second iteration of differencing by the UPGenerator 408 is performed. Although FIG. 4 shows there to be twoseparate instances of the UP generator 408, one for generating the firstupdate file 414 and another for generating the second update package416, it will be understood that such a representation is only purposesof explanation. That is, only one instance of the UP generator 408 needbe used to perform both the differencing iterations. Further, inalternate embodiments, the UP generator determining the first updatefile 414 based upon the differences between the first and second files410, 412 can be separate and distinct from the UP generator thatdetermines the second update package 416 (e.g., the two UP generatorscan be separate instances of the same program, application or componentor even two distinct programs, applications, or components).

To determine the second update package 416, the UP generator 408performs a second differencing operation to determine the differencesbetween that first update file 414 and an update package (UP) initialpattern 418. Insofar as the second update package 416 is representativeof differences between a given file and another file (that is, the firstupdate file 414) that already is representative of differences betweentwo files, the second update package 416 can be considered to includesecond-order difference information (by comparison, the first updatefile 414 includes first-order difference information). As for the UPinitial pattern 418, that pattern can be considered a file that isrepresentative of the contents of a given common, typical or otherwiseexpected update file. If the UP initial pattern 418 is properly chosenor determined prior to its use by the UP generator 408 in determiningthe second update package 416, the contents of the second update package416 can be much reduced relative to those of the first update file 414.In at least some circumstances, the UP initial pattern 418 is a libraryor data set of information.

Referring additionally to FIGS. 6A-6C, respectively, examples of the UPinitial pattern 418, first update file 414 and second update package416, respectively, are provided in more detail. Although the examplesprovided in FIGS. 6A-6C are provided for illustration purposes, it willbe understood that the contents of any given UP initial pattern orupdate files that are provided, utilized, transmitted, etc. can varywidely depending upon the embodiment of the invention and the particularoperational circumstances and underlying files being updated. Withrespect to the particular exemplary UP initial pattern 418 shown in FIG.6A, that UP initial pattern includes multiple generator commands 600,multiple software executable commands 602, and multiple softwareresources and applications represented in the form of binary patterns604.

Somewhat similar to the UP initial pattern 418 of FIG. 6A, the firstupdate file 414 of FIG. 6B also includes a plurality of generatorcommands 606. However, the generator commands 606 within the firstupdate file 414 not only include the generator commands 600 found withinthe UP initial pattern 418, but also include an additional generatorcommand 607 (shown in bold). In addition, the first update file 414 alsoincludes a plurality of software executable commands 608, which not onlyinclude the plurality of software commands 602 found in the UP initialpattern 418 but also include an additional software executable command609 (shown in bold). Further, the first update file 414 includessoftware resources and applications represented in binary patterns 610,which not only include the binary patterns 604 of the UP initial pattern418 but also include an additional binary pattern 611, which is alsoshown in bold.

The differences between the exemplary UP initial pattern 418 and thefirst update file 414 are reflected within the exemplary second updatepackage 416 of FIG. 6C, which includes the additional generator andsoftware executable commands 607 and 609, respectively, as well as theadditional binary pattern 611. Notwithstanding the fact that in thepresent embodiment, the first update file 414 is shown to only includeadditional features relative to the UP initial pattern 418, it will beunderstood that in other embodiments and circumstances the contents ofthe first update file 414 can omit one or more features found within theUP initial pattern (that is, where the first update file differs fromthe UP initial pattern in that some of the contents of the UP initialpattern have been deleted), or certain contents of the first update filecan represent rewritten/revised version of certain correspondingcontents within the UP initial pattern.

Turning back to FIG. 4, upon generating the second update package 416,the differencing component 402 then transmits that file via thecommunication link 406 to the update component 404. In the presentembodiment, the update component 404 can be understood as encompassing amemory component 420 that is part of the memory portion 320 of thewireless communication device 304. Although it is assumed in thisembodiment that part of the memory portion 320 has been employed as theupdate component 404 in the present embodiment, it will be understoodthat in other embodiments other memory components associated eitherdirectly or indirectly with the wireless communication device (e.g., oneor more of the internal components 315, or another external component incommunication with the wireless communication device) can be a part ofthe update component in conjunction with, in combination with, orinstead of the memory portion 320.

Generally speaking, the update component 404 is able to operate so as toupdate the first file 410 with the second file 412 by virtue of the factthat the update component 404 not only has, prior to the updatingprocess, a copy of the first file 410 stored in the memory component420, but also has, prior to the updating process, a copy of the UPinitial pattern 418 stored in that memory component as well. Because italready has both the first file 410 and the UP initial pattern 418, theupdate component 404 is able to entirely reconstruct the second file 412upon receiving merely the second update package 416 from thedifferencing component 402. It should further be noted that, althoughfor purposes of illustrating the upgrading process in FIG. 4 the updatecomponent 404 is primarily described as being a memory device, it willbe understood that the updating process actually involves processingthat is performed by the processor (e.g., the processor 318 of thewireless communication device 304) upon the information stored in theupdate component.

More particularly as shown in FIG. 4, the memory component 420 isdivided into several regions. A first of these is a file system (FS)region 422, where various software applications such as ring-tones,wallpapers, images, video etc. of the wireless communication device 304are stored, and where the second update package 416 generated by the UPgenerator 408 is also stored upon being transmitted/downloaded from thedifferencing component 402. In addition, the memory component 420includes a software region 424 where a copy of the first file 410 (thefile undergoing upgrading) is stored. As discussed below, the softwareregion 424 later stores the second file 412 (that is, the upgraded file)after the upgrading process has occurred.

Further, the memory component 420 also includes a reserved memory region426, which stores the UP initial pattern 418 and the first updatepackage 414 at different times during the upgrading process as discussedbelow. Also, the memory component 420 includes an update agent (UA)region 428, which stores a software program (also referred to herein asan update agent) that facilitates the updating of the first file 410 tothe second file 412 based upon the second update package 416. Althoughonly the four memory regions 422-428 have been shown in the presentembodiment, it will be understood that the number of regions within thememory component 420 can vary depending upon the embodiment.

FIG. 4 in particular shows the same update component 404/memorycomponent 420 four times to illustrate schematically how the contentsstored within the memory component evolve during an updating operation.As shown at a first step 430, the update package 416 when transmitted tothe update component 404 is first received at the memory component 420and in particular downloaded to the FS region 422 of the memorycomponent as shown at a step 434. Subsequent to the downloading of thesecond update package 416, at a third step 436 a copy 437 of the firstupdate package 414 is generated by the update component 404 based uponthe second update package and the UP initial pattern 418 stored in thereserved memory region 426, as represented by an arrow 435. In thepresent example, this operation can be performed through the use ofspecial software (e.g., “phone software”) that is also stored (e.g.,pre-loaded) within the FS region 422. The copy 437 of the first updatepackage 414 is then stored in the reserved memory region 426 in additionto (or, in some cases, in place of) the UP initial pattern 418, as shownby an arrow 438.

After generating the copy 437 of the first update package 414 in thethird step 436, at a step 440 a copy 441 of the second file 412 is thengenerated utilizing the copy 437 of the first update package 414 and thefirst file 410. In particular, the process of generating the copy 441 ofthe second file 412 is performed by the update agent stored within theUA region 428. As represented by an arrow 442, the update agent readsthe copy 437 of the first update package 414 (and particularly theinstructions and/or replacement data stored within that copy) togenerate the copy 441 of the second file 412, which is then stored inthe software memory region 424 in place of first file 410. Upon theperforming of this step, the update process is thus complete.

Notwithstanding the discussion provided above in regards to FIG. 4, theupdate process can take other forms in other embodiments, and thepresent invention is intended to encompass such other embodiments aswell. Turning to FIG. 5, one exemplary alternate embodiment of asoftware upgrade system 500 that can be implemented in the wirelesscommunication system 300 in accordance with another embodiment of thepresent invention is shown. Similar to the software upgrade system 400,the software upgrade system 500 includes a differencing component 502 incommunication with an update component 504 via a communication link 506.The upgrade component 504 in particular, like the upgrade component 404,includes a memory component 524 having each of a FS region 526, asoftware region 528, a reserved memory region 530 and a UA region 532.

However, the software upgrade system 500 also includes certain featuresand performs certain operations that are different than those of thesoftware upgrade system 400. Typically, the reserved memory region ofthe update component 504 is of a fixed, budgeted size such that it isnot possible for every update package of any arbitrary size to be storedwithin the memory region. Yet in many cases update packages (such as theupdate package 416) can become quite large and, in a case where theupdate package exceeds the size of the reserved memory region, asoftware upgrade system such as the system 400 shown in FIG. 4 will beunable to download and store the appropriate update package andconsequently unable to perform the upgrading process. In view of theseconsiderations, the differencing component 502 of the software upgradesystem 500 performs certain additional steps so as to reduce the overallcontents of the upgrade package that is to be downloaded to the upgradecomponent 504.

As shown in FIG. 5, the differencing component 502 like the differencingcomponent 402 includes an update generator (or UP generator) 508 thatgenerates a first update file 514 (represented as [UP A→K]) based uponan original/old (e.g., Version A) first file 510 and a new/revised(e.g., Version K) second file 512 (through the use of a differencingscheme or otherwise). However, rather than transmitting the first updatefile 514 to the upgrade component 504 (particularly if that upgrade fileis too large for the reserved memory region 530), that first update fileinstead is split by the differencing component 502 into first and secondhalves 516 and 518, respectively, which can be equally-sized (orunequally-sized) portions of the first update file 514. The first andsecond halves 516, 518 are then input again into the UP generator 508,which in turn generates a second update file or “Mini UP” 520representing the differences between those first and second halves.

Upon the generation of the second update file 520, that file is thencombined with the first half 516 to form a third update file 522, whichis then transmitted from the differencing component 502 to the upgradecomponent 504. It should be noted that, insofar as the second updatefile 520 is representative of differences between two files (that is,the halves 516 and 518), each of which is representative of differencesbetween two other files (that is, differences between respectiveportions of the first and second files 510, 512), the second updatepackage 416 can be considered to include second-order differenceinformation. By comparison, the first half 516 of the first update file514 includes first-order difference information, and thus the thirdupdate file 522 can be understood as including both first-order andsecond-order difference information.

Similar to the illustration provided by FIG. 4, FIG. 5 in particularshows the same update component 504/memory component 524 five times toillustrate schematically how the contents stored within the memorycomponent 524 evolve during an updating operation based upon the thirdupdate file 522. As shown, the third update file 522 upon being receivedat the update component 504 at a step 540 is first downloaded to thereserved memory region 530 (as indicated by an arrow 534) at a step 542.After this downloading, in a third step 544, the update agentimplemented within the UA region 532 utilizes the first half 516 and thesecond update file 520 of the third update file 522, as indicated by anarrow 536, to reconstruct a copy 546 of a portion (e.g., the first half)of the second file 512, as indicated by arrow 538. The copy 546 isstored within the software region 528 of the memory component 524, alongwith the copy of the first file 510 that is already present in thatsoftware region.

Subsequent to the creation of the copy 546 of the portion of the secondfile 512, the update agent in a fourth step 548 utilizes the secondupdate file 522 (as illustrated by an arrow 550), which is also storedas part of the third update file 522 in the reserved memory region 530,to generate a copy of the second half 518 of the first update file 514.The copy of the second half 518 of the first update file 514 upon beinggenerated is stored in the reserved memory region 530 as shown by arrow552 and, in some cases, can replace the first half 516 of the firstupdate file 514 previously stored within that memory region. Next, at afifth step 554, the update agent utilizes the copy of the second half518, as shown by an arrow 556, to reconstruct a copy 558 of theremaining portion (e.g., the second half) of the second file 512, asshown by an arrow 560. Upon reconstruction, the copies 546 and 558together constitute a copy of the entire second file 512, which thenentirely replaces the copy of the first file 510 within the softwareregion 528.

Although the embodiments of the present invention shown in FIGS. 3-6Care intended to be illustrative of certain exemplary embodiments of thepresent invention, it should be understood that the present invention isalso intended to encompass a variety of other embodiments as well. Bycomparison with conventional software upgrade systems such as thatdiscussed with reference to FIGS. 1-2C, it should be evident that theembodiments of FIGS. 3-6C offer enhanced performance during softwareupgrades insofar as the amount of information that is transmittedbetween the base station and the wireless communication device, and thusthe amount of time required for such transmission, can be significantlyreduced. Not only can this result in enhanced effective network capacity(and better use of existing bandwidth), which can translate to animproved user experience, but also often the software upgrade processcan be performed in the background without disrupting normal usage ofthe device. Indeed, in some cases embodiments of the present inventionallow for software upgrades where previously (e.g., due to memorylimitations) such upgrades might not have been feasible.

More particularly, the software upgrade systems described with respectto FIGS. 3-6C achieve enhanced performance in software upgrading in thatthese software upgrade systems operate not by transmitting simply thedifferences between a given old software file and an upgraded version ofthat software file, but instead by transmitting at least someinformation that represents certain second-order differences betweensuch differences and other assumed or otherwise-discernable standarddifferences. This second-order difference information tends to be ofmuch lesser size and consequently, by virtue of undergoing a doubleiteration of differencing, the update packages that are developed andtransmitted are significantly smaller than the update packagestransmitted in conventional software upgrade systems.

Notwithstanding the embodiments of the software upgrade systemsdescribed above with respect to FIGS. 1-6C, various refinements as wellas additions to the features above, is contemplated and encompassedwithin the invention. For example, although only certain components ofthe wireless communication device have been described above, variousadditional components commonly associated with such devices can bepresent. Further, the invention can be utilized with any of a variety ofwireless communication devices including, for example, mobile device,personal digital assistants, etc. The particular characteristics (e.g.,the number and arrangement of memory regions) of the memory components404, 524 can vary depending upon the embodiment as well.

Also, in at least some embodiments, additional operational methodologiesinstead of or in addition to those discussed particularly above can beutilized. For example, in yet another exemplary embodiment, the firsthalf 516 of the first update file 514 generated by the differencingcomponent 502 in the embodiment of FIG. 5 can be further compared withan UP initial pattern similar to the pattern 418 of FIG. 4, and theresulting differencing information can be transmitted (along with thesecond update file 520) as a combination third update file. That is, insuch embodiment, the third update file would not include both the secondupdate file 520 and the first half 516 of the first update file 514, butrather would include the second update file 520 and another file similarto the second update package 416 of FIG. 4 (in such embodiment, UPinitial pattern information would presumably also be provided at theupgrade component).

It is specifically intended that the present invention not be limited tothe embodiments and illustrations contained herein, but include modifiedforms of those embodiments including portions of the embodiments andcombinations of elements of different embodiments as come within thescope of the following claims.

We claim:
 1. A method of upgrading a first software file stored at awireless communication device so that the wireless communication deviceis provided with a second software file that is an upgraded version ofthe first software file, the method comprising: receiving, via awireless communication link, a software upgrade file, wherein thesoftware upgrade file includes second-order difference information;storing the received software upgrade file in a first memory portion ofat least one memory component associated with the wireless communicationdevice; and generating the second software file based upon the receivedsoftware upgrade file, the first software file, and an additional file,wherein the additional file includes a pattern file representative ofassumed differences between the first and second software files, andwherein the second-order difference information of the software upgradefile is representative of further differences between the additionalfile and a first-order difference information file.
 2. The method ofclaim 1, wherein the pattern file is also stored at the wirelesscommunication device prior to the receiving of the software upgradefile.
 3. The method of claim 2, wherein the first-order differenceinformation file includes an update package file constituting arepresentation of actual differences between the first and secondsoftware files, and wherein the update package file is generated basedupon the pattern file and the received software upgrade file by thewireless communication device.
 4. The method of claim 3, wherein thesecond software file is generated by the wireless communication devicebased upon the update package file and the first software file.
 5. Themethod of claim 4, wherein the second software file is stored in asegment of a memory component of the wireless communication device thatalso, at least previously, stored the first software file.
 6. The methodof claim 3, wherein the update package file is stored in a segment of amemory component of the wireless communication device that also, atleast previously, stored the pattern file.
 7. The method of claim 3,wherein each of the update package file and the pattern file includesrespective portions of generator command information, softwareexecutable command information, and binary pattern informationrepresentative of software resource or application information.
 8. Themethod of claim 7, wherein the additional file is received via thewireless communication link in combination with the software upgradefile.
 9. The method of claim 1, wherein the generating is performed atleast in part by a processing device of the wireless communicationdevice interacting with the first memory portion, and further comprisingdetermining the software upgrade file including the second-orderdifference information at a base station prior to transmission of thesoftware upgrade file to the wireless communication device.
 10. Themethod of claim 9, wherein the determining includes first determiningfirst-order difference information and then subsequently determining thesecond-order difference information, and wherein the method is repeatedin relation to additional, subsequent software upgrades in relation toone or more of the first software file, the second software file andother software files.
 11. The method of claim 9, wherein the wirelesscommunication device is at least one of a cellular telephone, a personaldigital assistant, a hand-held device and a mobile device, and whereinthe base station includes a server computer.
 12. A wirelesscommunication device configured to allow for upgrading of a firstsoftware file stored thereon with a second software file that is anupgraded version of the first software file, the device comprising: awireless receiver; a processor in communication with the wirelessreceiver; and a memory in communication with the processor, wherein thememory includes at least first, second and third memory regions, whereinthe first memory region is configured to store the first software file,wherein the second memory region is configured to store a softwareupgrade file received wirelessly via the wireless receiver, wherein thesoftware upgrade file includes second-order difference information thatis representative of one or more differences between a first differencefile and an additional file, the first difference file comprising atleast some first-order difference information representative of at leastsome actual differences between the first and second software files, andwherein the third memory region is configured to store the additionalfile, the additional file including a pattern file representative ofassumed differences between the first and second software files; whereinthe processor operating in conjunction with the memory is configured toreconstruct the second software file based upon the first software file,the software upgrade file, and the additional file.
 13. The wirelesscommunication device of claim 12, wherein the device is at least one ofa cellular telephone, a personal digital assistant, a hand-held deviceand a mobile device.
 14. The wireless communication device of claim 13,wherein both the first software file and the pattern file are stored inthe memory prior to the receiving of the software upgrade file.
 15. Thewireless communication device of claim 13, further comprising an updateagent capable of assisting in the reconstructing of the second softwarefile.
 16. The wireless communication device of claim 13, wherein thememory stores at least some information in a read-only memory (ROM)region.
 17. A wireless communications system configured to allow forupgrading of a first software file with a second software file that isan upgraded version of the first software file achieving softwareupgrades, the system comprising: a base station including a differencingcomponent that generates a software upgrade file including second-orderdifference information representative of differences between first andsecond intermediate files, wherein at least one of the intermediatefiles includes first-order difference information representative ofactual differences between the first and second software files; and amobile device in wireless communication with the base station via awireless communication link, the mobile device including a processor andan upgrade component including at least a part of a memory of the mobiledevice, wherein the update component receives the software upgrade filetransmitted wirelessly from the base station and generates the secondsoftware file based upon the received software upgrade file, the firstsoftware file and an additional file, wherein the additional file is thefirst intermediate file and includes a pattern file representative ofassumed differences between the first and second software files, and thesecond intermediate file includes the first-order differenceinformation.
 18. The wireless communication system of claim 17, whereinthe mobile device is at least one of a cellular telephone, a personaldigital assistant, and a hand-held device.
 19. The wirelesscommunication system of claim 17, wherein each of the base station andthe mobile device includes means for processing, and wherein the mobiledevice further includes means for storing information including at leastthe first software file and the received software upgrade file.
 20. Thewireless communication system of claim 18, wherein the mobile devicefurther includes an update agent capable of assisting in thereconstructing of the second software file.